<?php
App::uses('AppController', 'Controller');
/**
 * Empresas Controller
 *
 * @property Empresa $Empresa
 * @property Endereco $Endereco
 */
class EmpresasController extends AppController {

	function beforeFilter(){
		$this->loadModel('Endereco');
		$this->loadModel('Cidade');
	}
/**
 * index method
 *
 * @return void
 */
	public function index() {
		$this->Empresa->recursive = 0;
		$this->set('empresas', $this->paginate());
	}

/**
 * view method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function view($id = null) {
		if (!$this->Empresa->exists($id)) {
			throw new NotFoundException(__('Empresa inválido'));
		}
		$options = array('conditions' => array('Empresa.' . $this->Empresa->primaryKey => $id));
		$empresa = $this->Endereco->find('first', $options);
		$this->set(compact('empresa'));
		//$op = array('conditions' => array('Endereco.' . $this->Endereco->primaryKey => $empresa['Empresa']["enderecos_id"]));
		//$this->set('endereco', $this->Endereco->find('first', $op));
	}

/**
 * add method
 *
 * @return void
 */
	public function add() {
		if ($this->request->is('post')) {
			$this->Empresa->create();
			$this->Endereco->create();
			if ($this->Endereco->saveAssociated($this->request->data)) {
				#salva chaves associadas
				$this->Session->setFlash(__('Empresa salva com sucesso.'), 'default', array('class' => 'alert alert-success'));
				return $this->redirect(array('action' => 'index'));
			}else {
				$this->Session->setFlash(__("A empresa não pode ser salva. Por favor, tente novamente."), 'default', array('class' => 'alert alert-danger'));
			}
		}
		$cidades = $this->Cidade->find('list', array(
				'fields' => array('Cidade.id', 'Cidade.nome'),
				'conditions' =>
				array('Cidade.estado_id' => 12),
				'recursive' => 0));
		$this->set(compact('cidades'));
	}

/**
 * edit method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function edit($id = null) {
		if (!$this->Empresa->exists($id)) {
			throw new NotFoundException(__('Empresa Inválida'));
		}
		if ($this->request->is('post') || $this->request->is('put')) {
				if ($this->Endereco->saveAssociated($this->request->data)) {
					#aqui foi salvo as associacoes corretamente. porém salvando pelo endereco.
					$this->Session->setFlash(__("Dados da Empresa atualizados com sucesso."), 'default', array('class' => 'alert alert-success'));
					return $this->redirect(array('action' => 'index'));
				}else {
					$this->Session->setFlash(__("A empresa não pode ser salva. Por favor, tente novamente."), 'default', array('class' => 'alert alert-danger'));
				}
		} else {
			$options = array('conditions' => array('Empresa.' . $this->Empresa->primaryKey => $id));
			$this->request->data = $this->Endereco->find('first', $options);
		}
		$cidades = $this->Cidade->find('list', array(
					'fields' => array('Cidade.id', 'Cidade.nome'),
					'conditions' =>
					array('Cidade.estado_id' => 12),
					'recursive' => 0));
			$this->set(compact('cidades'));
		//$enderecos = $this->Endereco->find('list');
		//$this->set(compact('enderecos'));
	}

/**
 * delete method
 *
 * @throws NotFoundException
 * @param string $id
 * @return void
 */
	public function delete($id = null) {
		$this->Empresa->id = $id;
		if (!$this->Empresa->exists()) {
			throw new NotFoundException(__('Empresa inválida'));
		}
		$this->request->onlyAllow('post', 'delete');
		if ($this->Empresa->delete()) {
			$this->Session->setFlash(__('A Empresa foi excluída.'), 'default', array('class' => 'alert alert-success'));
		} else {
			$this->Session->setFlash(__('A Empresa não pode ser excluído. Por favor, tente novamente.'), 'default', array('class' => 'alert alert-danger'));
		}
		return $this->redirect(array('action' => 'index'));
	}
}
